home *** CD-ROM | disk | FTP | other *** search
/ MacHack 1996 / MacHack 1996.toast / Hacks / Hacks '96 / Internet Chooser / reggie / light / netstack.h < prev    next >
Encoding:
C/C++ Source or Header  |  1996-06-21  |  2.9 KB  |  98 lines  |  [TEXT/MMCC]

  1. /* File "netstack.h", Light Sockets - Copyright (C) Matt Slot, 1996           */
  2. /* Implementation wrappers for "Light Sockets" network abstraction library.   */
  3.  
  4. #ifndef __NET_STACK_HEADER__
  5. #define __NET_STACK_HEADER__
  6.  
  7. #ifndef __STD_TYPES_HEADER__
  8. #include "stdtypes.h"
  9. #endif /* __STD_TYPES_HEADER__ */
  10.  
  11. #ifndef __SOCKET_HEADER__
  12. #include "socket.h"
  13. #endif /* __SOCKET_HEADER__ */
  14.  
  15. #ifndef __DATAGRAM_HEADER__
  16. #include "datagram.h"
  17. #endif /* __DATAGRAM_HEADER__ */
  18.  
  19. /* **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** */
  20. /* **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** */
  21. /* Preprocessor Defines */
  22.  
  23.  
  24. /* **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** */
  25. /* **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** */
  26. /* Enum/Structure/Class Definitions */
  27.  
  28. typedef class NetworkStack {
  29.  
  30. public:
  31.     virtual                    ~NetworkStack    (void);
  32.  
  33.  
  34.     /* Network stack dispatch */
  35.     virtual SocketResult     DoLoad            (void);
  36.     virtual SocketResult     DoUnload        (void);
  37.     
  38.  
  39.     /* Socket-based dispatch */
  40.     virtual SocketResult     DoCreate        (void);
  41.     virtual SocketResult     DoTickle        (void);
  42.     virtual SocketResult     DoDispose        (void);
  43.  
  44.     virtual SocketResult     DoBind            (SocketAddressPtr reqAddress,
  45.                                                 SocketAddressPtr retAddress);
  46.     virtual SocketResult     DoUnbind        (void);
  47.     
  48.  
  49.     /* Name service dispatch */
  50.     virtual SocketResult     DoAddressResolve(Char8 *textAddress,
  51.                                                 SocketAddressPtr socketAddress);
  52.     virtual SocketResult     DoAddressLookup    (SocketAddressPtr socketAddress,
  53.                                                 Char8 *textAddress);
  54.  
  55.     /* Datagram-based dispatch */
  56.     virtual SocketResult     DoDatagramWrite    (Byte8 *dataPtr, UInt32 dataLen,
  57.                                                 SocketAddressPtr address);
  58.  
  59.     /* Stream-based dispatch */
  60.     virtual SocketResult     DoStreamServer    (UInt32 sessions);
  61.     virtual SocketResult     DoStreamClient    (SocketAddressPtr address);
  62.     virtual SocketResult     DoStreamWrite    (Byte8 *dataPtr, UInt32 dataLen);
  63.     virtual SocketResult     DoStreamClose    (Bool8 orderly);
  64.  
  65.  
  66. protected:
  67.  
  68.     /* Protected constructor - Base class can't be instantiated */
  69.                             NetworkStack    (SocketRef socket);
  70.  
  71.  
  72.     /* Datagram-based callback */
  73.             SocketResult     DatagramRead    (Byte8 *dataPtr, UInt32 dataLen,
  74.                                                 SocketAddressPtr address);
  75.  
  76.     /* Stream-based callback */
  77.             SocketResult     StreamAccept    (SocketRef *newSocket,
  78.                                                 SocketAddressPtr address);
  79.             SocketResult     StreamRead        (Byte8 *dataPtr, UInt32 dataLen);
  80.             SocketResult     StreamClosing    (Bool8 orderly);
  81.  
  82.  
  83.     /* Protected data */
  84.             SocketRef        socket;
  85.  
  86.     } NetworkStack, *NetworkStackRef;
  87.  
  88. /* **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** */
  89. /* **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** */
  90. /* Function Prototypes */
  91.  
  92.  
  93. /* **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** */
  94. /* **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** */
  95.  
  96. #endif /* __NET_STACK_HEADER__ */
  97.  
  98.